home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
SPACE 2
/
SPACE - Library 2 - Volume 1.iso
/
utility
/
540
/
toy_cad
/
uncrunch.lst
< prev
Wrap
File List
|
1985-11-19
|
4KB
|
215 lines
' --------- ---------
' -------------------- Toy Cad Picture Uncruncher --------------------
' ------------------- -------------------
'
DEFBYT "b"
DEFWRD "w"
DEFINT "i"
DEFFLT "r"
'
DEFMOUSE 0
'
mode%=XBIOS(4)
IF mode%<>0
ALERT 3,"|This demo operates in| low rez only",0,"Exit",e%
END
ENDIF
'
HIDEM
'
GOSUB initialize_screens
'
ON ERROR GOSUB fix
ON BREAK GOSUB fix
'
GOSUB define_3d_files
'
GOSUB load_crunched_animation
'
GOSUB show_crunch
'
GOSUB fix
'
'
'
> PROCEDURE show_crunch
'
CLS
COLOR b_white
'
IF w_index(0)<>0
'
w_start=0
w_end=w_index(0)-1
'
GOSUB draw_crunch
SGET backdrop$
ENDIF
'
FOR w_frame=1 TO w_crunch_to-w_crunch_from+1
'
w_start=w_index(w_frame-1)
w_end=w_index(w_frame)-1
'
GOSUB draw_crunch
'
' GOSUB flip_screen
NEXT w_frame
'
REPEAT
MOUSE w,w,btn
UNTIL btn<>0
RETURN
'
> PROCEDURE draw_crunch
'
FOR w=w_start TO w_end
'
w_x_tri_0=w_crunch_x1(w)
w_x_tri_1=w_crunch_x2(w)
w_x_tri_2=w_crunch_x3(w)
w_x_tri_3=w_x_tri_0
w_y_tri_0=w_crunch_y1(w)
w_y_tri_1=w_crunch_y2(w)
w_y_tri_2=w_crunch_y3(w)
w_y_tri_3=w_y_tri_0
'
b=b_crunch_colors_and_lines(w)
DEFFILL b AND 15
POLYFILL 4,w_x_tri(),w_y_tri()
'
b=(b AND 240)/16
IF b<>5
POLYLINE b+1,w_x_tri(),w_y_tri()
ENDIF
NEXT w
RETURN
'
> PROCEDURE initialize_screens
'
LOCAL b,br,bc,b2,wt
'
DIM ps%(2),ls%(2),br(2)
'
ls%=XBIOS(3)
ps%=XBIOS(2)
ls%(0)=ls%
ps%(1)=ps%
'
scr$=SPACE$(32000+300)
ls%(1)=(INT((VARPTR(scr$)+6)/256)+1)*256
ps%(0)=ls%(1)
'
DEFFILL 0
i=XBIOS(5,L:ps%(0),L:ls%(0),mode%)
VSYNC
PBOX 0,0,319,199
i=XBIOS(5,L:ps%(1),L:ls%(0),mode%)
VSYNC
PBOX 0,0,319,199
'
b_num_screens=2
RETURN
'
> PROCEDURE home_screen
'
i=XBIOS(5,L:ps%,L:ls%,-1)
RETURN
'
> PROCEDURE flip_screen
b_flip=1-b_flip
VSYNC
i=XBIOS(5,L:ps%(b_flip),L:ls%(b_flip),-1)
VSYNC
RETURN
'
> PROCEDURE load_crunched_animation
'
FILESELECT #"load crunch","A:*.crn","",file_name$
IF file_name$<>""
OPEN "i",#1,file_name$
'
BGET #1,V:w_neo_pallet(2),32
'
byte1=INP(#1)
byte2=INP(#1)
w_num_triangles=wrd
'
w=w_num_triangles*2+2
'
BGET #1,V:w_crunch_x1(0),w
BGET #1,V:w_crunch_x2(0),w
BGET #1,V:w_crunch_x3(0),w
BGET #1,V:w_crunch_y1(0),w
BGET #1,V:w_crunch_y2(0),w
BGET #1,V:w_crunch_y3(0),w
BGET #1,V:b_crunch_colors_and_lines(0),w_num_triangles+1
'
b_frame=INP(#1)
'
BGET #1,V:w_index(0),b_frame*2+2
'
CLOSE #1
GOSUB update_color_regs
ENDIF
RETURN
'
> PROCEDURE define_colors
'
b_black=0
b_white=1
b_blue=2
b_red=3
RETURN
'
> PROCEDURE update_color_regs
'
i=XBIOS(6,L:i_pallet_loc)
RETURN
'
> PROCEDURE define_3d_files
'
w_max_crunch=1000
'
DIM w_index(101)
DIM w_crunch_x1(w_max_crunch)
DIM w_crunch_x2(w_max_crunch)
DIM w_crunch_x3(w_max_crunch)
DIM w_crunch_y1(w_max_crunch)
DIM w_crunch_y2(w_max_crunch)
DIM w_crunch_y3(w_max_crunch)
'
DIM b_crunch_colors_and_lines(w_max_crunch)
'
DIM w_neo_pallet(64)
i_pallet_loc=V:w_neo_pallet(0)+4
'
GOSUB define_colors
'
DIM w_x_tri(5),w_y_tri(5),w_z_tri(5)
'
w_max_possible_points=99
'
DIM w_backdrop_num(w_max_possible_points)
'
ABSOLUTE w_x_tri_0,V:w_x_tri(0)
ABSOLUTE w_x_tri_1,V:w_x_tri(1)
ABSOLUTE w_x_tri_2,V:w_x_tri(2)
ABSOLUTE w_x_tri_3,V:w_x_tri(3)
'
ABSOLUTE w_y_tri_0,V:w_y_tri(0)
ABSOLUTE w_y_tri_1,V:w_y_tri(1)
ABSOLUTE w_y_tri_2,V:w_y_tri(2)
ABSOLUTE w_y_tri_3,V:w_y_tri(3)
'
ABSOLUTE byte1,V:wrd
ABSOLUTE byte2,(V:wrd)+1
RETURN
'
> PROCEDURE fix
GOSUB home_screen
ON BREAK
SHOWM
EDIT
RETURN